package com.boat.framework.common.monitor.event;

import java.io.Serializable;

import com.boat.framework.common.thread.context.LogContext;
import com.boat.framework.common.util.IdUtils;
import com.boat.framework.common.util.JsonUtils;
import com.boat.framework.common.util.SpringUtils;

import cn.hutool.core.date.DateUtil;
import lombok.Data;

/**
 * 基础指标属性
 * 
 * @author 周江
 *
 */
@Data
public abstract class BaseMonitorEvent {
	// 事件id
	private String id;
	// 应用名
	private String appName;
	// 指标分类,一般取类名
	private String type;
	// 资源名，如：CcbCreditServiceImpl.testSuccess
	private String name;
	// 日志执行时间，格式：yyyy-MM-dd HH:mm:ss
	private String time;
	// 跟踪号
	private String traceId;
	// 服务器本地ip
	private String localIp;

	protected BaseMonitorEvent(){
		id = IdUtils.getObjectId();
		appName = SpringUtils.getProperty("spring.application.name");
		type = this.getClass().getSimpleName();
		traceId = LogContext.getTrackId();
		localIp = LogContext.getLocalIp();
		time = DateUtil.now();
	}
	
	@Override
	public String toString() {
		return JsonUtils.toJson(this);
	}
}
